const fs = require('fs');
const path = require('path');
const chalk = require('chalk');
const { generateHtml } = require('./htmlGenerator');
const { copy } = require('./clipboard'); // 使用自定义剪贴板模块

async function handleOutput(snapshot, options) {
  const { output, clipboard, html, silent } = options;
  
  // 1. 输出到剪贴板
  if (clipboard) {
    try {
      await copy(snapshot);
      if (!silent) console.log(chalk.green('📋 代码快照已复制到剪贴板!'));
      return true;
    } catch (error) {
      console.error(chalk.red(`❌ ${error.message}`));
      
      // 提供替代方案
      if (!silent) {
        console.log(chalk.yellow('\n💡 您可以手动复制输出:'));
        console.log(chalk.yellow('1. 使用 -o 选项保存到文件'));
        console.log(chalk.yellow('2. 或者运行带 --html 选项生成HTML报告\n'));
      }
      
      return false;
    }
  }
  
  // 2. 输出为HTML文件
  if (html) {
    const htmlOutput = await generateHtml(snapshot);
    const outputPath = output || 'code-snapshot.html';
    try {
      fs.writeFileSync(outputPath, htmlOutput);
      if (!silent) console.log(chalk.green(`🌐 HTML报告已保存至: ${path.resolve(outputPath)}`));
      return true;
    } catch (error) {
      console.error(chalk.red(`❌ 保存HTML失败: ${error.message}`));
      return false;
    }
  }
  
  // 3. 输出到文本文件
  if (output) {
    try {
      fs.writeFileSync(output, snapshot);
      if (!silent) console.log(chalk.green(`📄 文本文件已保存至: ${path.resolve(output)}`));
      return true;
    } catch (error) {
      console.error(chalk.red(`❌ 保存文件失败: ${error.message}`));
      return false;
    }
  }
  
  // 4. 默认输出到控制台
  if (!silent) console.log(snapshot);
  return true;
}

module.exports = {
  handleOutput
};